In systems and processes that utilize signal processing, the function of a filter is to remove unwanted parts of the signal, such as random noise, or to extract useful parts of the signal, such as the components lying within a certain frequency range. Depending on the type of signal being dealt with, filters may be analog or digital. An analog filter uses analog electronic circuits made up from components such as resistors, capacitors, and op amps to produce the required filtering effect. Such filter circuits are widely used in such applications as noise reduction, video signal enhancement, graphic equalization, and many others. Differently, a digital filter uses a digital processor to perform numerical calculations on sampled values of the signal. The processor may be a general-purpose computer such as a personal computer, or a specialized DSP (Digital Signal Processor) chip. In many of today's electronic systems, digital filters are more and more prevalent, as digital signals are more and more prevalent.
One common type of digital filter typically used in digital signal processing is a direct form, second-order digital, Infinite Impulse Response (IIR) filter. FIG. 1 shows a block diagram of this kind of conventional digital filter 100. As can be seen, a digital signal may be input to the filter at an input point 101. Here, a series of discrete-time signals representing a digitally quantized analog signal is streamed into the filter 100. The discrete-time signal, called x(n), is passed through five transforms and summed to produce an output signal, y(n) where n represents the digital signal at point n in time. The five transforms introduce a time shift and a multiplier coefficient. As such, a first transform includes a first time shift block 110 for x(n) and a first multiplier coefficient block 111 with a first coefficient a0. A second transform includes a second time shift block 120 for x(n-1) and a second multiplier coefficient block 121 with a second coefficient a1. A third transform includes a third time shift block 130 for x(n-2) and a third multiplier coefficient block 131 with a third coefficient a2. A fourth transform includes a fourth time shift block 140 for y(n-1) and a fourth multiplier coefficient block 141 with a fourth coefficient b1. Finally, a fifth transform includes a fifth time shift block 150 for y(n-2) and a fifth multiplier coefficient block 151 with a fifth coefficient b2.
As digital signals are passed through the filter 100, the resulting output (at an output point 102) is realized by summing (at the summer 105) all five signals as modified by the coefficients of the digital filter 100. The resulting Z-transform for several filter types is as follows:
      Y    ⁡          (      z      )        =            x      ⁡              (        z        )              ⁢                            a          0                +                              a            1                    ⁢                      z                          -              1                                      +                              a            2                    ⁢                      z                          -              2                                                  1        -                              b            1                    ⁢                      z                          -              1                                      -                              b            2                    ⁢                      z                          -              2                                          By adjusting the coefficients (i.e., designing a digital filter), any type of digital filter may be realized including, band-pass, high-pass, low-pass, high-shelf, low-shelf, etc.
This kind of digital filter 100 may typically be designed and used for parametric and graphic equalization with high efficiency and little susceptibility to overload according to known design techniques. However, the frequency response of the digital filter 100 becomes unpredictable when the design frequency (i.e., the center frequency of the filter that is desired to be boosted or attenuated) is a lower frequency. By low frequency, it is understood that with respect to the human range of hearing, a low frequency typically includes frequencies below 100 Hz. When designing for low frequency filtering, the filter coefficients that need to be implemented in order to control the frequency response are confined to a limited number of design choices because of coefficient quantization. When using IIR digital filters, a precise number of bits is allowed for representing discrete-time signals. Often referred to as numeric resolution, a specific number of bits (typically 24 or 32) is used to represent the input signal, coefficients, intermediate calculations, and the resulting output.
As the number of bits is a limiting factor, this results in direct-form filters having more response error for low-frequency digital filters. Quantization is a process where a continuous value (a real number) is translated into a fixed precision representation. The difference between the original value and the quantized value is the quantization error. Quantization error can cause a filter response that is different from the desired filter in amplitude and phase at a given frequency. The difference is the filter response error.
This effect of quantization error is illustrated in FIG. 2 where several combinations of filter coefficients are superimposed onto a single graph 200. In general, the five coefficients of the filter 100 correspond to filter parameters more easily understood by a user or filter designer. As such, filters are typically described as having a center frequency, Q, and gain. A center frequency refers to the frequency at which a bell peaks. Q, sometimes called a Q-rating or Q-setting, refers to the width of the bell curve at specific points in the bell (sometimes these points are synonymous with −3 dB points, but not always). The measurement points for Q are somewhat arbitrary, so long as the points remain the same from curve to curve for measurement and comparison reasons. Finally, gain refers to the gain setting resulting in a gain or attenuation at the center frequency. Together, these parameters describe features of a filter that may be adjusted by a user.
In this example, a set of coefficients for a bell-filter is realized with a center frequency of approximately 23 Hz, with a Q of about 33, and a gain varied over several different responses. In general, the filter response error increases when: the center frequency decreases, the sample rate increases, and/or the Q of the filter increases.
In theory, the example curves should be “stacked” as if increasingly larger mirror images of themselves, each having the same center frequency and Q with the output level being the only difference from response to response. However, as can be seen as the output level is adjusted, each curve yields a different center frequency. Somewhat less detectable by the naked eye in this graph are small changes in Q as the output level is adjusted as well. Thus, any signal passing through this filter would be affected differently as the output level is increased. A similar phenomenon occurs if the Q is adjusted while holding the output level constant. This scenario is not shown herein, however.
The graphical illustration of FIG. 2 is an exaggerated scenario that would easily be noticed by any technician. Typically, these response errors are much smaller and less-easily noticed. Nevertheless, the response error exists and is quantifiable. In the past, this error has typically been ignored as the error goes unnoticed by an average filter user. That is, even if a system claims that a filter is filtering at 20 Hz, it is more likely that it is really a filter having some center frequency that is close, but not precisely 20 Hz; i.e., a 20.7 Hz filter, for example.
Thus, a system could possibly employ a “trial and error” method of realizing a digital filter by choosing a number of coefficients for the digital filter that achieved filter parameters inputted by a user (i.e., via pots or controls over center frequency, Q, and gain) to be close enough while still maintaining a predictable response. As systems allow for an end-user to have full parametric control of a filter, a designer must either provide coefficient combinations for all possibilities of parametric settings, or use trial and error when a parameter changes. While achievable, such a large storage of filter data or searching is cumbersome and inefficient. As such, one realization method preserves filter shape (type), but leaves a filter design that may be subject to small unpredictable errors in the center frequency. What remains is a static frequency error that is typically less than 1 Hz at low-frequencies. Higher design frequencies reduce the error as a 40 Hz filter has about half the error of a 20 Hz filter.
Other solutions exist for alleviating this quantization error. One such solution is to use a higher bit-precision which results in a frequency error reduction of about one-half for each bit. Even so, at least a 32-bit fixed point or 40-bit floating point system would be needed for typical applications. 32-bit floating point has a resolution of only about 24 bits, with the remaining bits devoted to sign and exponent. Using higher precision, such as 48 bits, is possible, but at the expense of additional processing power.
There are alternatives to direct form digital filters, such as coupled and lattice forms. These filters typically require significantly more computation and have many other tradeoffs, such as noise performance, overload susceptibility, quantization sensitivity, support for various filter types, and additional sample delays. Thus, an efficient and reliable method for efficiently and more precisely realizing direct form, IIR digital filters is desired.